/**   
 *    
 * @file
 * @brief
 *
 * @<b>文件名</b>      : TopicInfo
 * @n@n<b>版权所有</b>: 网龙应用软件开发一部
 * @n@n<b>作  者</b>  : Administrator
 * @n@n<b>创建时间</b>: 2014-1-28 上午11:16:20 
 * @n@n<b>文件描述</b>:  
 * @version  
 */
package com.common.weibolib;

import java.util.ArrayList;

import android.text.SpannableString;
import android.text.TextUtils;

import com.common.android.utils.parser.BaseType;

/**
 * ClassName:TopicInfo Function: TODO ADD FUNCTION Reason: TODO 网龙微博API(新版)
 * 
 * @author chenqian
 * @version
 * @since Ver 1.1
 * @Date 2014 2014-1-28 上午11:16:20
 * 
 * @see
 */

public class TopicInfo implements BaseType {
	// 微博内容类型常量
	public static final String TYPE_FORWARD = "forward";
	public static final String CATEGORY_TEXT = "text";
	public static final String CATEGORY_IMAGE = "image";
	public static final String CATEGORY_LONGTEXT = "longtext";
	public static final String CATEGORY_ATTACH = "attach";
	public static final String CATEGORY_RANK = "u_rank";
	/**微博id*/
	public long tid;
	/**单位id*/
	public long unit_id;
	/**群组id，默认为0*/
	public long group_id;
	/**微博内容", 如果是长微博，则content表示摘要内容*/
	public String content;
	/**content解析后的内容，用于展示，不用每次getview都去解析*/
	public SpannableString contentSS;
	/**地址位置信息*/
	public String location;
	/**原创or转发,"forward", "first"*/
	public String type;
	/**微博分类 参见 WeiboContentCategory*/
	public String category;
	/**"附加内容id" 图片id，或者附件id,多图的话以半角逗号分隔,后面可能会加music，video 各种类型。。so，保留着*/
	public String extra_id;
	/**微博根id,如果不是转发则为0*/
	public long root_tid;
	/**发布时间*/
	public long post_time;
	/**微博来自哪里，可能是Android,iPhone,新浪等*/
	public String from_string;
	/**分享的新浪微博id*/
	public long weibo_tid;
	/**微博评论数*/
	public int replys;
	/**微博转发数*/
	public int forwards;
	/**被阅读数,说明：只有在 /topic_api/user/uid/{uid}接口中查看自己的微博时候，glances数据才是正确的。其他接口都是返回0*/
	public int glances;
	/**被赞次数*/
	public int praises;
	/**我是否赞过 true 未赞过 false赞过*/
	public boolean praised;
	/**长微博内容,只有是长微博才有这个字段*/
	public String article;
//	public SpannableString articleSS;// article解析后的内容，用于展示，不用每次getview都去解析
	/**微博作者信息*/
	public UserInfo user;
	/**附件信息*/
	public AttachList attach;
	/**图片信息*/
	public ImageList image;
	/**原微博，只有type为forward时才有本字段*/
	public RootTopic root_topic;
	/**是否只是新浪数据*/
	public boolean isOnlySina = false; 
	/**本地创建时间戳，用于发送后更新列表区分。*/
	public long localCreateAt; 
	/**本地微博是否发送失败*/
	public boolean isFailToSend = false;
	
	public static final int HAS_PRAISED = 1;
	public static final int NOT_PRAISED = 0;
	/**特殊场景，需要存储id,如赞，@我的 ,用于向服务端获取数据用*/
	public long request_id;
	/**从服务端取下来时向用户展示的时间*/
	public String showTime;
	
	// ========= 明星APP用到字段
	/**
	 * 可见范围
	 * 
	 * <br>Created 2014-5-22 上午10:20:31
	 * @version  TopicInfo
	 * @author   huangszh		
	 *
	 * @see
	 */
	public class ScopeType {
	    private ScopeType() {
            
        }
	    /** 公开 */
	    public final static int ALL = 0;
	    /** 好友可见 */
	    public final static int JUST_FRIEND = 1;
	}
	/** 可见范围 ScopeType。必选。默认好友可见*/
	public int scope = ScopeType.JUST_FRIEND;
	/**粉丝送的鲜花数*/
	public int flower_count;
	/**是否为明星印章 0:否，1：是*/
	public boolean stamped;
	/** 是否精品微博 0:否，1：是*/
	public boolean picked;
	/** 我是否收藏过 0:没收藏过,1收藏过*/
	public boolean favorited;
	/**详情页面，微博的评论列表*/
	public ReplyInfoList replyList;
	/**详情页面，微博的赞列表*/
	public PraisorList praisorList;
	/**详情页面，微博的@列表*/
	public UserInfoList atUserList;
	/**明星行程*/
	public ScheduleInfo schedule;
	/**记录此时是展开还是收起状态，默认是收起状态*/
	public boolean isShowAll = false;
	/**category=u_rank才有返回ranking_user字段*/
    public UserInfoList rankingUserList;
	
	
	/**
	 * 外面对praised设值时通过此接口，好处是界面层用的时候不用每次都判断==1
	 * 
	 * @n<b>函数名称</b> :setPraised
	 * @brief
	 * @see
	 * @since Ver 1.1
	 * @param @param praised
	 * @return void
	 * @<b>作者</b> : 黄永鑫
	 * @<b>创建时间</b> : 2014-3-7上午11:13:59
	 */
	public void setPraised(int praised) {
		if (praised == HAS_PRAISED)
			this.praised = true;
		else
			this.praised = false;
	}

	/**
	 * 
	 * @n<b>函数名称</b> :getUidsForRank
	 * @brief 排行榜时，返回从extra_id中得到的id
	 * @see
	 * @since Ver 1.1
	 * @param @return
	 * @return ArrayList<Long>
	 * @<b>作者</b> : Administrator
	 * @<b>创建时间</b> : 2014-3-12下午3:50:16
	 */
	public ArrayList<Long> getUidsForRank() {
		ArrayList<Long> uids = new ArrayList<Long>();
		if (TextUtils.isEmpty(extra_id)) {
			return uids;
		}
		String[] strs = extra_id.split(",");
		if (null != strs) {
		    try{
		        for (String str : strs) {
	                uids.add(Long.parseLong(str));
	            }
		    }catch(NumberFormatException e){
		        e.printStackTrace();
		    }
		}
		return uids;
	}

	/**
	 * json->topicinfo的时候是用的01解析，那topicinfo->json的时候也应该用01表示，否则这两个互转的时候会出错
	 * 
	 * @n<b>函数名称</b> :isPraised
	 * @brief
	 * @see
	 * @since Ver 1.1
	 * @param @return
	 * @return int
	 * @<b>作者</b> : PanYun
	 * @<b>创建时间</b> : 2014-3-12下午4:18:47
	 */
	public int isPraised() {
		return this.praised ? 1 : 0;
	}
}
